Quarto soporta la construcción de artículos científicos a través de plantillas preformateadas o personalizadas donde encontraremos:
un esquema estandarizado para autores que se puede expresar una vez en el documento fuente (aunque se apliquen multiples plantillas de salida),
el uso de Citation Style Language (CSL) para automatizar el formato de citas y bibliografías,
herramientas de RStudiomodo Visual para trabajar con Zotero, DOI’s, CrossRef, DataCite, PubMed y archivos .bib,
salida a pdf, html y docx con formato personalizado,
Formatos de revistas
Existen plantillas preformateadas que cumplen con requisitos dispuestos por varias revistas científicas internacionales que se pueden aplicar en Quarto.
Quarto utiliza la representación de Mardown estándar de Pandoc para las citas (por ejemplo [@cita]): las citas van entre corchetes y están separadas por punto y coma. Cada cita debe tener una clave, compuesta por “@” + el identificador de la cita de la base de datos.
Pandoc le brinda el formato a las citas bibliograficas. De forma predeterminada, usa el formato autor-fecha del estilo Chicago, pero puede especificarse un formato personalizado utilizando CSL (Citation Style Language) en la cabecera YAML del documento.
Citas bibliográficas
En la cabecera YAML se define:
el nombre del archivo .bib o .bibtex donde están las citas a usar - metadato bibliography:
en formato PDF se puede seleccionar si se maneja el sistema de citas con citeproc de Pandoc o alternativamente natlib o BibLatex - metadato cite-method:
Muchas de estas configuraciones ya vienen predeterminadas en las plantillas de revistas.
Inclusión de código en Quarto
En todo documento Quarto se puede incluir código de diferentes lenguajes de programación (R, python, julia, javascript, etc).
Habitualmente el código sirve para mostrar resultados estadísticos en forma de tabla y/o gráfico. Otras veces el código produce diversas tareas que no se muestran hasta tanto se produzca la salida de resultados. Y en ocasiones, cuando el producto tiene un fin docente sobre el lenguaje de programación en si, se muestran las líneas de código junto a lo que produce.
Toda la ejecución del código se maneja desde las opciones de ejecución que se configuran como metadatos dentro de los fragmentos (chunks).
Opciones de ejecución de código
Algunas de las opciones de control de ejecución de los chunck de código.
Opción
Descripción
eval
Evalua el codigo del chunk (si es false, saltea el código y no lo ejecuta).
echo
Incluye el código fuente en la salida
output
Incluye el resultado de la ejecución del código en la salida (true, false, or asis para indicar que muestre los resultados en forma cruda).
warning
Gestiona las advertencias en la salida.
error
Gestiona los errores en la salida.
include
Evita que se incluya cualquier salida (código o resultados) (por ejemplo include: false suprime toda la salida del bloque de código).
message
Gestiona los mensajes en la salida
fig-*
Familia de opciones para las figuras (alto, ancho, alineación, nombre, resolución, etc)
Tablas desde código
Salida directa, igual que en consola y estéticamente feas.
```{r}library(datos)pinguinos |> slice(1:6)```
# A tibble: 6 × 8
especie isla largo_pico_mm alto_pico_mm largo_aleta_mm masa_corporal_g sexo
<fct> <fct> <dbl> <dbl> <int> <int> <fct>
1 Adelia Torge… 39.1 18.7 181 3750 macho
2 Adelia Torge… 39.5 17.4 186 3800 hemb…
3 Adelia Torge… 40.3 18 195 3250 hemb…
4 Adelia Torge… NA NA NA NA <NA>
5 Adelia Torge… 36.7 19.3 193 3450 hemb…
6 Adelia Torge… 39.3 20.6 190 3650 macho
# ℹ 1 more variable: anio <int>
Tablas desde código
El paquete knitr, incuído en RStudio, puede convertir las salidas estos dataframes en tablas visuales con knitr::kable():
especie
isla
largo_pico_mm
alto_pico_mm
largo_aleta_mm
masa_corporal_g
sexo
anio
Adelia
Torgersen
39.1
18.7
181
3750
macho
2007
Adelia
Torgersen
39.5
17.4
186
3800
hembra
2007
Adelia
Torgersen
40.3
18.0
195
3250
hembra
2007
Adelia
Torgersen
NA
NA
NA
NA
NA
2007
Adelia
Torgersen
36.7
19.3
193
3450
hembra
2007
Adelia
Torgersen
39.3
20.6
190
3650
macho
2007
Adelia
Torgersen
38.9
17.8
181
3625
hembra
2007
Adelia
Torgersen
39.2
19.6
195
4675
macho
2007
Tablas desde código
Existen numerosos paquetes para darle formato a las tablas producidas mediante código.
Un ejemplo muy completo es el paquete flextable, que vimos en clases anteriores.
Además de salidas HTML es compatible con pdf y Word (docx).
```{r}library(datos)library(ggplot2)pinguinos |> ggplot(aes(x = largo_pico_mm, y = alto_pico_mm, col = isla)) + geom_point()```
Ejemplo: Gráficos desde código
```{r}#| fig-width: 5#| fig-height: 3library(datos)library(ggplot2)pinguinos |> ggplot(aes(x = largo_pico_mm, y = alto_pico_mm, col = isla)) + geom_point()```
Ejemplo: Gráficos desde código
```{r}#| fig-width: 5#| fig-height: 3#| fig-cap: "Tamaño de los pingüinos en tres islas del Archipelago Palmer."#| fig-alt: "Diagrama de dispersión que muestra el tamaño de los picos de los pingüinos en tres islas"library(datos)library(ggplot2)pinguinos |> ggplot(aes(x = largo_pico_mm, y = alto_pico_mm, col = isla)) + geom_point()```
Tamaño de los pingüinos en tres islas del Archipelago Palmer.
Formatos posibles
Editando la cabecera YAML se puede definir formatos de documentos distintos a HTML.
Entre las opciones de documentos con fines de impresión se encuentran:
PDF (en base a LaTeX)
PDF (en base a typst)
docx (archivo Word)
PDF (LaTeX)
Para procesar documentos PDF de Quarto (documentos tradicionales pdf de RMarkdown) nuestra computadora debe cumplir con el requerimiento de tener instalado una distribución actualizada de Tex.
Existen varios motores PDF pero se recomienda utilizar TinyTeX (basado en TexLive) que podemos instalar fácilmente desde RStudio.
Otras distribuciones posibles para Windows son: MikTex o Tex Live, pero deben descargase e instalarse independientemente de RStudio.
TinyTex
TinyTeX es una distribución LaTeX personalizada, basada en TeX Live, que es pequeña en tamaño pero funciona bien en la mayoría de los casos, especialmente para usuarios de R.
Se instala ejecutando la siguiente linea en la Terminal de RStudio
quarto install tinytex --update-path
Luego activamos la opción:
Use tinytex when compiling .tex files
en Global options de RStudio y reiniciamos.
Cabecera PDF
Las cabecera básica de documentos PDF basados en LaTeX es:
---title: "Mi Documento"format: pdf: toc: true---
* en este ejemplo, además activamos tabla de contenidos.
La mayoría de las opciones de ejecución vistas para HTML sirven para este tipo de documentos.
Quarto utiliza clases de documentos KOMA Script de forma predeterminada para libros y documentos PDF.
Clases de documentos
La opción de ejecución documentclass: posibilita cambiar de clase utilizando la configuración KOMA Script.
Opción
Descripción
scrartcl
Es la clase estándar. Diseñada para artículos (más o menos cortos)
scrreprt
Clase reportes, similar a los libros. Se diferencian principalmente en los valores predeterminados.
scrbook
Diseñada para libros desde aproximadamente una docena hasta miles de páginas
Clases de documentos
Seleccionar que clase de documento pdf queremos tendrá que ver con lo que estemos produciendo.
Por ejemplo, los artículos estan configurados predeterminandamente con una sola cara, lo mismo que los reportes. En cambio, los libros son de doble cara.
De todas maneras, las opciones se pueden cambiar con classoption: (oneside, twoside)
Ejemplo
Configurar el documento de clase scrbook automatizará muchas de las necesidades comunes para imprimir y encuadernar archivos PDF en un libro físico (es decir, los capítulos comienzan en páginas impares, tamaños de márgenes alternos, etc.)
Otras opciones de ejecución
Opción
Descripción
papersize
Configura tamaño de papel
lot
Activa tabla de tablas
lof
Activa tabla de figuras
fontsize
Tamaño de fuente
mainfont
Fuente principal
geometry
Llama a paquete latex geometrías - define margenes, etc.
Librerías latex
Algunas librerías Latex como geometry vienen implementadas dentro de TinyTex y asociadas a la cabecera YAML de Quarto. Otras librerías pueden llamarse desde la opción include-in-header para inyectar comandos Latex.
Por ejemplo, incluyendo una fuente específica para el texto.
Quarto instalará todos los paquetes especificados mediante inclusiones que aún no haya instalado localmente durante la renderización del documento usando TinyTex.
Latex puro
Al crear un documento PDF, Pandoc permite el uso de código LaTex puro entre el markdown.
\begin{tabular}{ll}A & B \\A & B \\\end{tabular}
Si bien es muy conveniente para este formato, el código se ignora cuando se procesa en otros como HTML y Word.
Tengamos en cuenta que en algunos casos, el LaTeX puro requerirá paquetes de LaTeX adicionales (que deberemos incluir en la cabecera).
PDF (typst)
Typst es un nuevo sistema de composición tipográfica de código abierto basado en un lenguaje de marcas que está diseñado para ser tan potente como LaTeX y al mismo tiempo mucho más fácil de aprender y usar. Genera buenos resultados en PDF con tiempos de renderizado muy rápidos.
Dado que Typst está en desarrollo activo y fue incorporado en la última versión de Quarto, todavía existen algunas limitaciones en el soporte. Es decir, que algunas caracterísiticas nativas como el diseño de página avanzado no están del todo implementadas.
* en el ejemplo, además activamos tabla de contenidos, con una profundidad de 2 y título de tabla “Contenidos” (en español).
La mayoría de las opciones de ejecución vistas para HTML sirven para este tipo de documentos.
Plantillas Word
Para personalizar la apariencia de los documentos resultantes en Word se puede añadir en la cabecera una plantilla con diseño modificado. Para esto se sigue el siguiente paso a paso:
Desde Word se crea un nuevo documento y se modifica el estilo del documento (tipo de hoja, orientación, márgenes, fuentes, colores, etc)
Se almacena el archivo .docx resultante en la carpeta del proyecto RStudio donde estamos construyendo el documento Quarto.
En la cabecera YAML del documento Quarto se incluye la línea reference-doc: con el nombre del documento anterior (ejemplo: plantilla.docx)
Al renderizar Quarto toma las características de apariencia definidas y las reproduce en la salida del documento generado.